Designerだけじゃない!Alteryxで実現するデータサイエンスの全て #alteryx_ug
こんにちは、小澤です。
当エントリは『Alteryx User Group in 東京 Advent Calendar 2018』25日目のエントリです。
- Alteryx User Group in #東京 Advent Calendar 2018 - Qiita
- Alteryx User Group in 東京 Advent Calendar 2018 | シリーズ | DevelopersIO
昨日24日目の記事はtruestar 藤様による『Alteryx でジオコーディング 2018』でした。
Alteryxの製品とそれぞれが実現できること
Alteryxでできることの話をする際には、多くの場合Alteryx Designerの話が中心となります。
Alteryxでは、まずDesignerがなければ何もできません。 ほかの多くの製品はDesignerを中心として成り立っており、ローカルPC上だけでは実現できないデータ分析の様々なシーンに対応するためにそれ以外の製品が存在しています。 そのため、Alteryxを使ってデータ分析を行う際には、その中心となるDesignerの話が多くなるのもうなずけるでしょう。
では、実際には他にどのような製品が存在しており、それらはどのように活用できるのでしょうか?
Alteryxには2018/12/25現在、Designerを含めて以下の4つの製品があります。
- Alteryx Designer
- Alteryx Server
- Alteryx Connect
- Alteryx Promote
今回はデータ分析のプロセスにおいてこれらをどのように活用していけるのかを見ていきたいと思います。
データ分析のプロセスとAlteryxの利用シーン
データ分析プロジェクトにおける一連のプロセスの進め方の例として以前CRISP-DMという考え方を紹介しました。
このプロセスでは最初に「ビジネス課題の理解」というものがあります。 「ビジネス課題の理解」はデータ分析を実際に始める前のフェーズとなっており、この段階では何かしらのツールを使うというよりは人間が頑張る段階になります。 そのため、Alteryxがサポートする範疇ではなくなりますが、ここでこれからデータ分析を使って何をするかを決定することが以降のプロセスの成否に大きくかかわってきます。
また、最後の「展開/共有」のフェーズにおいてはそれを見る対象が人間となるため、"どのように"分析結果を見せるかはAlteryxを利用できますが、それを"どう活用するか"の部分においては一部人間がアクションを行う部分となります。
それ以外のプロセスでは、Alteryxを最大限活用することが可能となります。
この状況を解説するものとして、Alteryx Inspire 2017のキーノートでは、様々なデータ分析の過程をAlteryxで置き換えることが可能になるという解説がされていました。
では、どの部分でどの製品を利用できるのでしょうか? 続いてはAlteryx Inspire 2018での紹介となります。
ここでは、データ分析の流れとして
- Discover + Collaborate
- Prep + Analyze/Model
- Share + Scale/Goven
- Deploy + Manage
となっています。 こられの流れにそって、どの段階でどの製品を有効活用可能か見ていきましょう。
Discover + Collaborate
最初のプロセスとしては「Discover + Collaborate」となります。 このプロセスは実際にデータ分析をやってみないとイメージしづらい部分もあるかもしれません。
データ分析というと、AIや機械学習を使ったモデリングを想像することが多いかもしれません。 ただし、いざ実際に分析しようと思うと、分析対象のデータが必要となります。
実際に分析を始めようとすると、「必要なデータがどこにあるかわからない」「データが入ってるデータベースを教えてもらったが各列の値の意味が分からない」などの状況が発生します。 もちろん、分析用のデータが一元管理されていればそれに越したことはないですが、工数やコストがかかる作業であったりする割にそれだけでは利益を生まない作業でもあるため、「データ分析をするためにデータを集める必要がある」と「投資するには分析結果がどれだけビジネスに貢献するか確認する必要がある」は鶏卵問題のような様相を呈してくることもあります。
そこでAlteryxの製品である Alteryx Connect を使うことで、様々なソースに分散するデータに「どのようなものがあるか」を一元管理することが可能になります。
注意すべき点として、Alteryx Connectはメタデータを管理するものであって、データそのものを持つわけではありません。 この後詳細は見ていきますが、できることとしては
- どこにどのようなデータがあるのか
- (RDBの場合)どのような列があるのか
- どのワークフローの入力/出力となっているのか
といったものを管理します。 Alteryx Connectでサポートしているデータソース一覧は公式ドキュメントをご参照ください。
では、実際の使い方を見てみましょう。
Alteryx Connectを利用するには以下の3つが必要になります。
- Alteryx Connectがインストールされた環境
- Alteryx Connect LoadersがインストールされたDesigner
- Alteryx Server
となります。 まずは、ローカルのDesigner環境にConnect Ldersをインストールしましょう。 これはライセンスポータルからダウンロードしたものをインストールするのみです。
インストールが完了すると、Help > Sample Workflowsに「Alteryx Connect Metadata Loader」というカテゴリが追加されます。
例えば、MySQLに入っているデータのメタデータをConnectと連携させたい場合はこの中から MySQL Loader > MySQL Loader を選択します。
選択するとワークフローが開かれますが、メタデータの連携をするだけであれば、この内容を理解する必要はありません。 Analytic Appとしてワークフローを実行すると以下のような画面が表示されます。
この画面では、メタデータ取得対象となるMySQLの接続先に関する設定を行います。
なお、メタデータ取得に際してConnect側でMySQLのODBCドライバがインストールされている必要があります。 また、加えてConnect環境側の「ODBCデータソース」にて設定がされている場合、「Use DSN」でその名前も利用できます。
Alteryx Connectタブ側では、Connectへの接続情報を入力します。
無事連携が完了すると、Connect側で「Databases」を選択した際に連携したデータベースに関する情報が表示されます。
この画面から該当データベースを選択することで、その中のテーブル一覧、さらにテーブル内の列一覧へと辿れます。
これらのデータベース、テーブル、列に対してはそれぞれConnect上での説明文を入れたりすることも可能です。
このほかにもコラボレーション機能として、コメントを付けたり、イイネを付けたりといった機能もあります。 これによって、メタデータのわかりずらい部分をオーナーに確認したり追加してほしい情報のリクエストを送ったりといったことが可能になるでしょう。
他のデータベースについても同様にサンプルワークフローを選択して、実行することでメタデータの連携が可能となります。
また、データベースにすべての「データが入ってればいいんだけど、、うちにはみんなが勝手に管理しているExcelファイルとかあるんだよね」という場合も考えられるかもしれません。 Connectではそういったファイルにも対応しています。 やり方としては、
- ファイルサーバを用意する
- ファイルサーバ上にファイルを置く
- File Loaderを使ってファイルが置かれているパスを連携する
という流れで実現できます。
ファイルの場合、データベースと異なり明確に定義された列の情報がないため、ファイル単位以上に深掘りしたメタデータは取得できないのでご注意ください。
Alteryx ConnectのLoaderはAnalytic Appとして実装されていることからもわかる通り、対応していないものに対してCustom Loaderを実装することも可能です。 詳細はドキュメントを参照ください。
Alteryx Connectでは、Metadataの連携がされているデータソースに対して、それがどのワークフローで利用されているかも確認することが可能です。
ワークフローの連携を行うには後述のAlteryx Serverが必要になります。 ワークフローを連携するAlteryx Loaderでは、Alteryx Serverにアップロードされているワークフローの情報をConnectと連携します。
Alteryx Loaderを実行すると以下のようにAlteryx Serverへの接続先情報が要求されます。
Alteryx Loaderを実行すると、以下のようにConnectのAnalytic Workflowsから一覧で確認可能になります。
また、ワークフローの入出力対象がConnectと連携しているデータソースの場合、入出力対象も併せて確認できます。
なお、この画面からデータソースをクリックしていくことで、ワークフロー1の出力をワークフロー2が利用しているような状況に対して順に辿っていくことも可能です。
これによって、すでにある分析が
- どのようなワークフローがどのような分析をしているのか
- どのワークフローがどのデータに依存してどのような出力を行っている
といったことも確認可能になります。 Connectが持つのはあくまでもメタデータのため、具体的な処理内容の確認はこの後のプロセスとなりますが、データに対する情報がすでに確認可能な状態になっているため、ワークフローの処理内容を確認する際には、どのようなプロセスとなっているのかのみに集中することが可能になります。
Prep + Analyze/Model
Alteryx Connectにて、現在利用可能なデータやすでに行われている分析が確認出来たら、いよいよ実際の分析に着手可能な状態となります。
ここでは、みなさんおなじみのAlteryx Designerを利用することになります。 そのため、このプロセスについては多くを語る必要はないでしょう。
本記事は分析のテクニックを紹介するものではないため詳細は割愛します。 詳しく知りたい方は、Alteryx Communityなど充実したリソースが存在しています。
Share + Scale/Goven
ここまでで、データソースの準備が整い、分析も行えました。 先ほどのCRISP-DMにのっとると、最後に必要となるのが「共有/展開」のプロセスとなります。
このプロセスにはAlteryx Serverを活用します。 Alteryx Serverができることを一言で説明するとワークフローの共有です。
Alteryx Designerで作成されたワークフローはServerにアップロードすることが可能で、以下のように一覧で表示されます。
これらのワークフローは
- 誰が存在を知っていいか
- 誰が実行していいか
- 誰が他者の実行結果を見ていいか
といった権限の設定も行うことが可能です。
- Alteryx Serverのユーザと権限について | DevelopersIO
- Alteryx Serverのユーザ,Studio,District,Collectionの関連性まとめ | DevelopersIO
- Alteryx ServerでCollectionを使ってワークフローを共有する | DevelopersIO
また、YXDB形式で出力されたデータやPCXML形式で出力されたレポートについては出力結果をServer上でそのまま確認できるとともに任意の形式でダウンロードすることも可能です。
2018.3以降では、これに加えてInsightツールで作成されたダッシュボードを共有することも可能です。
そのほか、データベースの接続先を定義することも可能です。
ここで管理されている接続先情報は以下のような特徴があります。
- 誰が利用可能かの定義も可能
- Designerから直接ここで定義された接続先を利用可能
これらの特徴を利用することで、データそのものへの権限設定も可能です。
Alteryxの特徴の一つとして"誰でも繰り返し実行可能なワークフローとして処理を定義する"というものがあります。 Serverでワークフローを共有すればデータサイエンティストが行っている処理を共有し、必要な時に実行するだけであれば誰でもできたり、必要な時には処理内容を確認できます。 また、何らかの指標(例えば利益率)などを計算する際、みんなが好き勝手計算すると人によって使っているデータや計算の方法が異なるといったことが起きがちです。 Alteryx Serverで基準となる計算方法が共有されていればそういった事態も防げるでしょう。
今まで全くやっていなかった組織がデータ分析を始める際にはDesignerのみでスモールスタートする、というケースも多いです。 組織にデータ分析文化が根付いていくにしたがってAlteryx Serverのような共有する仕組みが必要になってくることでしょう。
Deploy + Manage
さて、いよいよ最後のプロセスである「Deploy + Manage」です。 ここまでで、最初に紹介したCRISP-DMのプロセスの一通りが網羅できたような気もしますが、なぜこのプロセスが必要なのでしょうか?
それは、データ分析のプロセスにおいて主に機械学習を使うような際に必要な工程があるからです。 データ分析の結果に基づくアクションの自動化です。 これはどういったものを指すかというと、例えばショッピングサイトでのオススメ商品を出すような場合を考えてみましょう。
誰に何をオススメするかはデータに基づいて"似ている商品"や"ある商品を買った人が次に買うであろう商品"、"特定の特徴を持つユーザが買いやすい商品"など様々な要素に基づいてオススメする商品を決めることになります。 一方、考えなければならないこととして"どのタイミングでオススメするか"という要素もあります。
例えば、メルマガ配信などであれば、都度データ分析によってセグメンテーションして、その結果を人間が見て出しわける、といったやり方もできるかもしれません。 しかし、それでは手間がかかりすぎますし、「ある商品のページにアクセスした人に自動でオススメ商品も出したい」となった場合に全く対応できません。
そこで、必要になるのが"何を出すか"までの自動化です。 そういった際に機械学習を使うことで"過去のデータに基づいて推論を行う"という特徴が利用できますが、Alteryxのここまで出てきた製品だけでは機械学習を使ったモデリングはできてもリアルタイムに推論結果を出力するということができません。 それを補うのが Alteryx Promote になります。
Alteryx Promoteを理解するために、機械学習における"学習"と"推論"の仕組みについて理解しておきましょう。
機械学習では大きく分けて、"学習"と"推論"の2つのプロセスに分けられます。
学習のプロセスでは 過去のデータ を使って モデル を作成します。 先ほどのオンラインショッピングサイトの例でいえば、過去のデータから"商品Aと商品Bが一緒に買われる可能性が高い"、"特定の年代によく売れる商品がある"などといった規則性を導き出します。 この規則性がモデルとなるわけです。
推論のプロセスでは作成されたモデルを使って、"商品Aのページにアクセスした"という情報から"商品Bをオススメする"、"ログインしたユーザが特定の年代なので売れる商品をオススメする"などのプロセスがリアルタイムに自動化されるわけです。
Alteryxを使って、この仕組みを実現するには
- Alteryx DesignerのPredictiveツールを使ってモデルを作成する
- Alteryx Promoteにモデルをデプロイする
- Alteryx Promoteではデプロイされたモデルを使って推論するAPIを提供する
という流れになるわけです。
ここまで理解できればあとは簡単です。 Deployツールを使ってモデルをPromoteにデプロイします。
Alteryx Designerを使ったモデルの作成方法は以下のシリーズを参照してください。
基本的には、データを各種Predictiveツール(茶色いアイコンのやつ)につなげるような感じです。 Predictiveツールによって作成されたモデルをDeployツールに接続します。
この例ではForest Modelツールによって作成されたモデルをDeployツールに接続しています。
Deployツールの設定は以下のようになっています。
初回のみ、接続先のPromoteを指定するために「Add Connection」を選択します。
以下のようなダイアログが表示されるので、PromoteのURLを入力して、Nextを選択します。
続いての画面では、認証に利用するユーザ名とAPI Keyを設定します。
API KeyはブラウザからPromteにアクセスして「ACCOUNT」を選択することで確認できます。 表示されていないので、このままコピーしてください。
以下のような画面が表示されれば完了です。
以下のように接続先情報が表示された状態になります。
接続先情報は保存されるので以降はこの設定は行う必要はなく、登録されている接続先情報一覧から選択可能になります。
Model Nameにはデプロイする際のモデル名を設定します。 Alteryx Promoteでは、後述のモデルのバージョン管理も行えるのですが、同じ名前かつOverwrite existing modelにチェックが入ってる状態であれば、既存のモデルの新しいバージョンとしてデプロイされます。
デプロイされたモデルはPromoteのウェブ画面からも確認できます。
デプロイが完了したモデルは、REST APIを使って利用可能な状態になっています。 通常は、任意のシステムから呼び出すことになりますが、今回はAlteryx Designerから利用する方法を見てみましょう。
Alteryxから利用するにはScoreツールを利用します。
予測対象となるデータのみを接続したScoreツールを用意して、 以下のような設定を行います。
- Alteryx Promote Modelにチェックを入れる
- 接続先として先ほどDeployツールで設定したものを利用する
- 利用するモデルを一覧から選択する
これで、予測スコアを求めることができます。
なお、APIを使って推論を行う方法に関しては、Promote上で モデルを選択 > Example でJSONを直接記述して結果を確認出来たり、Samplesで各種言語での利用方法を確認出来たりします。
最後に、モデルのバージョンについて解説します。 機械学習では、ある入力に対してどのような出力をするかを人間が予測するのは難しくなります。 このルールベースなど、人間が対応可能な範囲を超えて推論できる仕組みこそが機械学習が有用な点の1つとなりますが、一方で望まない結果が出力されることもあります。
また、機械学習は過去のデータの傾向から推論を行うという性質上、データの傾向に変化があれば学習しなおす必要があります。
モデルをアップデートすることで、今までうまく推論できていなかったものがいい結果となることがある一方で、うまく推論できていたものが同じ結果になることも保証されません。
万が一、そのまま出力するとマズいような結果を出力するようなモデルになってしまった場合を考えて過去のバージョンに戻すことも考えられます。
Promoteではそういった巻き戻しが発生する可能性や、新しいモデルを使ったA/Bテストをするような場合に備えて過去のモデルに戻せるようバージョン管理がされています。
おわりに
今回は、Alteryxの各製品でどのようなことができるかを解説しました。 当初全体を通しての俯瞰程度にとどめる予定でしたが、比較的新しい製品であまり情報がないConnectやPromoteについては結構ガッツリ書いてしまいましたw
もちろん、DesignerのみあればAlteryxを使い始めることは可能ですが、データ分析をより活用していくために、これらの製品の利用も検討してみてはいかがでしょうか?
これにて、Alteryx User Group in 東京 Advent Calendar 2018は完走となります。 最後までお付き合いいただきありがとうございました!
また来年(?)のアドベントカレンダーにもご期待ください!